home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / catman / p_man / cat3 / complib / dbdsqr.z / dbdsqr
Text File  |  1996-03-14  |  7KB  |  199 lines

  1.  
  2.  
  3.  
  4. DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))                                                          DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      DBDSQR - compute the singular value decomposition (SVD) of a real N-by-N
  10.      (upper or lower) bidiagonal matrix B
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE DBDSQR( UPLO, N, NCVT, NRU, NCC, D, E, VT, LDVT, U, LDU, C,
  14.                         LDC, WORK, INFO )
  15.  
  16.          CHARACTER      UPLO
  17.  
  18.          INTEGER        INFO, LDC, LDU, LDVT, N, NCC, NCVT, NRU
  19.  
  20.          DOUBLE         PRECISION C( LDC, * ), D( * ), E( * ), U( LDU, * ),
  21.                         VT( LDVT, * ), WORK( * )
  22.  
  23. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  24.      DBDSQR computes the singular value decomposition (SVD) of a real N-by-N
  25.      (upper or lower) bidiagonal matrix B:  B = Q * S * P' (P' denotes the
  26.      transpose of P), where S is a diagonal matrix with non-negative diagonal
  27.      elements (the singular values of B), and Q and P are orthogonal matrices.
  28.  
  29.      The routine computes S, and optionally computes U * Q, P' * VT, or Q' *
  30.      C, for given real input matrices U, VT, and C.
  31.  
  32.      See "Computing  Small Singular Values of Bidiagonal Matrices With
  33.      Guaranteed High Relative Accuracy," by J. Demmel and W. Kahan, LAPACK
  34.      Working Note #3 (or SIAM J. Sci. Statist. Comput. vol. 11, no. 5, pp.
  35.      873-912, Sept 1990) and
  36.      "Accurate singular values and differential qd algorithms," by B. Parlett
  37.      and V. Fernando, Technical Report CPAM-554, Mathematics Department,
  38.      University of California at Berkeley, July 1992 for a detailed
  39.      description of the algorithm.
  40.  
  41.  
  42. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  43.      UPLO    (input) CHARACTER*1
  44.              = 'U':  B is upper bidiagonal;
  45.              = 'L':  B is lower bidiagonal.
  46.  
  47.      N       (input) INTEGER
  48.              The order of the matrix B.  N >= 0.
  49.  
  50.      NCVT    (input) INTEGER
  51.              The number of columns of the matrix VT. NCVT >= 0.
  52.  
  53.      NRU     (input) INTEGER
  54.              The number of rows of the matrix U. NRU >= 0.
  55.  
  56.      NCC     (input) INTEGER
  57.              The number of columns of the matrix C. NCC >= 0.
  58.  
  59.  
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))                                                          DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))
  71.  
  72.  
  73.  
  74.      D       (input/output) DOUBLE PRECISION array, dimension (N)
  75.              On entry, the n diagonal elements of the bidiagonal matrix B.  On
  76.              exit, if INFO=0, the singular values of B in decreasing order.
  77.  
  78.      E       (input/output) DOUBLE PRECISION array, dimension (N)
  79.              On entry, the elements of E contain the offdiagonal elements of
  80.              the bidiagonal matrix whose SVD is desired. On normal exit (INFO
  81.              = 0), E is destroyed.  If the algorithm does not converge (INFO >
  82.              0), D and E will contain the diagonal and superdiagonal elements
  83.              of a bidiagonal matrix orthogonally equivalent to the one given
  84.              as input. E(N) is used for workspace.
  85.  
  86.      VT      (input/output) DOUBLE PRECISION array, dimension (LDVT, NCVT)
  87.              On entry, an N-by-NCVT matrix VT.  On exit, VT is overwritten by
  88.              P' * VT.  VT is not referenced if NCVT = 0.
  89.  
  90.      LDVT    (input) INTEGER
  91.              The leading dimension of the array VT.  LDVT >= max(1,N) if NCVT
  92.              > 0; LDVT >= 1 if NCVT = 0.
  93.  
  94.      U       (input/output) DOUBLE PRECISION array, dimension (LDU, N)
  95.              On entry, an NRU-by-N matrix U.  On exit, U is overwritten by U *
  96.              Q.  U is not referenced if NRU = 0.
  97.  
  98.      LDU     (input) INTEGER
  99.              The leading dimension of the array U.  LDU >= max(1,NRU).
  100.  
  101.      C       (input/output) DOUBLE PRECISION array, dimension (LDC, NCC)
  102.              On entry, an N-by-NCC matrix C.  On exit, C is overwritten by Q'
  103.              * C.  C is not referenced if NCC = 0.
  104.  
  105.      LDC     (input) INTEGER
  106.              The leading dimension of the array C.  LDC >= max(1,N) if NCC >
  107.              0; LDC >=1 if NCC = 0.
  108.  
  109.      WORK    (workspace) DOUBLE PRECISION array, dimension
  110.              2*N  if only singular values wanted (NCVT = NRU = NCC = 0) max(
  111.              1, 4*N-4 ) otherwise
  112.  
  113.      INFO    (output) INTEGER
  114.              = 0:  successful exit
  115.              < 0:  If INFO = -i, the i-th argument had an illegal value
  116.              > 0:  the algorithm did not converge; D and E contain the
  117.              elements of a bidiagonal matrix which is orthogonally similar to
  118.              the input matrix B;  if INFO = i, i elements of E have not
  119.              converged to zero.
  120.  
  121. PPPPAAAARRRRAAAAMMMMEEEETTTTEEEERRRRSSSS
  122.      TOLMUL  DOUBLE PRECISION, default = max(10,min(100,EPS**(-1/8)))
  123.              TOLMUL controls the convergence criterion of the QR loop.  If it
  124.              is positive, TOLMUL*EPS is the desired relative precision in the
  125.              computed singular values.  If it is negative,
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))                                                          DDDDBBBBDDDDSSSSQQQQRRRR((((3333FFFF))))
  137.  
  138.  
  139.  
  140.              abs(TOLMUL*EPS*sigma_max) is the desired absolute accuracy in the
  141.              computed singular values (corresponds to relative accuracy
  142.              abs(TOLMUL*EPS) in the largest singular value.  abs(TOLMUL)
  143.              should be between 1 and 1/EPS, and preferably between 10 (for
  144.              fast convergence) and .1/EPS (for there to be some accuracy in
  145.              the results).  Default is to lose at either one eighth or 2 of
  146.              the available decimal digits in each computed singular value
  147.              (whichever is smaller).
  148.  
  149.      MAXITR  INTEGER, default = 6
  150.              MAXITR controls the maximum number of passes of the algorithm
  151.              through its inner loop. The algorithms stops (and so fails to
  152.              converge) if the number of passes through the inner loop exceeds
  153.              MAXITR*N**2.
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.